package com.itheima.homework;

/**
 * @Author 王加鑫
 * @Date 2021/4/22 20:27
 * @Version 1.0
 * 9、【编号：603】 有一个很有名的数学逻辑题叫做不死神兔问题。
 * 有一对兔子，从出生后第3个月起每个月都生一对兔子，
 * 小兔子长到第三个月后每个月又生一对兔子，假如兔子都不死，问第二十个月的兔子对数为多少？
 * 1: 1
 * 2: 1
 * 3: 2
 * 4: 3
 * 5: 5
 * 6: 8
 */
public class Day05HomeWork09 {
    public static void main(String[] args){

        System.out.println("兔子总对数：" +returnSum(new int[20]));

        returnSum();

        System.out.println(returnSum(20));

    }

    /*
    数组的形式
     */
    public static int returnSum(int[] arr){
        arr[0] = 1; // 第一个月兔子的数量，1对
        arr[1] = 1; // 第二个月兔子的数量，1对
        for (int i = 2; i < arr.length; i++) {
            /*
            从第三个月开始，当前月兔子对数是前两个月兔子对数的和，
            所以求当前月兔子对数的核心代码是arr[i] = arr[i - 2] + arr[i - 1];
             */
            arr[i] = arr[i - 2] + arr[i - 1];
        }
        return arr[arr.length-1];
    }

    /*
    变量
     */
    public static void returnSum(){
        int a = 1;
        int b = 1;
        for (int x = 0; x < 18; x++) {
            int temp = a;
            a = b;
            b = temp + b;
        }
        System.out.println(b);
    }

    /*
    递归思想
     */
    public static int returnSum(int n){
        if(n == 1 || n == 2){
            return 1;
        }else {
            return returnSum(n-1) + returnSum(n-2);
        }
    }
}
